/**
 * @author wn
 * @date 2023/11/27 10:57:19
 * @description: 购物车 API 接口
 */

import { request } from '@/utils/request'

enum Url {
	AddCart = '/member/cart',
	AllSelected = '/member/cart/selected',
}

/**
 * 购物车添加商品
 * @param data -- skuId , count--商品数量
 * @returns Promise<Any>
 */
export const addCartApi = (data: { skuId: string; count: number }) =>
	request({
		method: 'POST',
		url: Url.AddCart,
		data,
	})

/**
 * 获取购物车列表
 * @returns Promise
 */
export const getCartListApi = () =>
	request<CartItem[]>({
		method: 'GET',
		url: Url.AddCart,
	})

/**
 * 删除购物车
 * @param data id数组
 * @returns Promise<Any>
 */
export const deleteCartItemApi = (data: { ids: string[] }) =>
	request({
		method: 'DELETE',
		url: Url.AddCart,
		data,
	})

/**
 * 更改购物车商品 数量 选中状态
 * @param skuId 当前的 skuId
 * @param data 是否选中 数量
 * @returns Promise<Any>
 */
export const updateCartItemApi = (
	skuId: string,
	data: { selected?: boolean; count?: number }
) =>
	request({
		method: 'PUT',
		url: `${Url.AddCart}/${skuId}`,
		data,
	})

/**
 * 购物车 全部选中 状态更新
 * @param data 是否全部选中  无需 id -- 全部更改
 * @returns Promise<Any>
 */
export const updateCartAllSelectedApi = (data: { selected: boolean }) =>
	request({
		method: 'PUT',
		url: Url.AllSelected,
		data,
	})
